An Exploration of Pursuing Professional Explorations

My Data Science Job Search: August - October, 2020

Rohan Lewis

2020.09.29

I began applying for Information Technology jobs on August 11th, 2020. I used LinkedIn as my primary source of information. I varied between large and small companies, EasyApply and normal applications via company job application portals or website submissions, and various locations across the US. I even applied to a job in Australia (by accident) and a job in Toronto, Canada.

I saved my application information in an Excel Spreadsheet as I applied. I decided to use it to practice some visualization techniques.

In [1]:
#General Packages.
from datetime import date
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import re

#Specific Packages
from wordcloud import WordCloud
import bar_chart_race as bcr
from IPython.display import Video
import plotly.graph_objects as go
from pywaffle import Waffle

#Read data.
df = pd.read_excel(r'D:\Data Science\To Work On\Jobs\Jobs.xlsx')
lat_lons = pd.read_excel(r'D:\Data Science\To Work On\Jobs\uscities.xlsx')

#Convert datetime columns to date.
df['Date_Applied'] = df['Date_Applied'].apply(lambda x: x.date())
df['Rejection_Email'] = df['Rejection_Email'].apply(lambda x: x.date())
df['Viewed_Email'] = df['Viewed_Email'].apply(lambda x: x.date())

#Current Numbers
print("As of " + date.today().strftime("%A, %B %d, %Y") + ", I have applied to " + str(df.shape[0]) + " jobs.")
As of Tuesday, September 29, 2020, I have applied to 408 jobs.

Job Title

This section looks at the specific job titles.

  1. I eliminated all non alphabetical characters.

  2. A recurring theme in job titles was numbering, such as "Data Analyst II" or "Data Scientist III". Since I had already eliminated numbers, I needed to eliminate Roman Numerals (only I, II, and III).

  3. I had some false negatives, so I fixed those.
    1. "AR VR" was changed back to "AR/VR" for one title.
    2. "C C" was changed back to "C2C" for one title.
    3. "Microsoft" was changed to "Microsoft-365" for one title.
    4. "Non IT" was changed to "Non-IT" for one title.

  4. Words were then tallied.
  5. Word Frequencies

    Below are the top 10 and bottom 10 (some of the single occuring) words from the job titles.

In [2]:
#Combine all job titles into one string.
jobs_string = ' '.join(df['Title'])
#Only letters are useful.
regex = re.compile('[^a-zA-Z]')
#Remove all non letters, and remove ' I ', ' II ', ' III '.
jobs_string = regex.sub(' ', jobs_string).replace(' I ',' ').replace(' II ',' ').replace(' III ',' ')
#Specific Replacement.
jobs_string.replace('AR VR','AR/VR').replace('C C', 'C2C').replace('Microsoft', 'Microsoft-365').replace('Non IT', 'Non-IT')

#Create a frequency distribution of all words in the job titles.
jobs_dict = {}
jobs_words = jobs_string.split()
for word in jobs_words :
    if word not in jobs_dict.keys() :
        jobs_dict[word] = 1
    else :
        jobs_dict[word] += 1

#Convert frequency distribution to dataframe, sort by frequency.
jobs_df = pd.DataFrame({'Word' : list(jobs_dict.keys()),
                       'Count' : list(jobs_dict.values())}).sort_values(by = 'Count', ascending = False, axis = 0).reset_index(drop = True)
jobs_df
Out[2]:
Word Count
0 Data 375
1 Scientist 236
2 Analyst 100
3 Engineer 56
4 Machine 37
... ... ...
159 Sales 1
160 Revenue 1
161 GCP 1
162 AWS 1
163 Author 1

164 rows × 2 columns

Word Cloud

I thought a word cloud would be a fun representation to look at the job titles. The proportional size has been rescaled.

In [3]:
jobs_wc = WordCloud(background_color = 'white',
                    max_words = 300,
                    collocations = False,
                    relative_scaling = 0)
jobs_wc.generate(jobs_string)
plt.figure(figsize = (15, 11))

plt.imshow(jobs_wc, interpolation = 'bilinear')
plt.axis('off');

Companies

Some companies are hiring heavily. Some are recruiting and staffing agencies for others.

Once my application was in a system on a particular company's career portal page, it was easy to reapply. I used this quite a bit for companies like Amazon, Google, MITRE, and PayPal.

I used LinkedIn's EasyApply for many applications as well.

For the others, I sometimes applied as a guest, sometimes only had to upload my resume and cover, sometimes had to go through a 20 minute ordeal just for one opening. It varied. ¯_( ͡° ͜ʖ ͡°)_/¯

Company Applications by Date

Below is a cumulative sum of applications per company and date, sorted alphabetically and chronologically, respectively.

In [4]:
#List of all companies.
companies = df['Company'].unique()
#Dates from first application to today.
date_index = pd.date_range(start = min(df['Date_Applied']), end = date.today())

#Create new data frame of 0s.
application_df = pd.DataFrame(index = date_index, columns = companies).fillna(0)

#Create cumulative count of job applications by company and date.
for i in range(len(df)) :
    company = df.iloc[i, 1]
    date_app = df.iloc[i, 7]
    application_df.loc[date_app:, company] += 1

#Alphabetical
application_df = application_df.reindex(sorted(application_df.columns), axis=1)
pd.set_option('display.max_columns', None)
display(application_df)
AETEA Information Technology ALTEN AP Professionals ARYZTA Accelere Addison Professional Financial Search LLC Aditi Consulting Advanced Auto Parts Age of Learning Alexander Technology Group Amazon American Bureau of Shipping Analytic Recruiting Inc. Apex Systems Artisan Talent Atlas Reasearch Austin Fraser Averity Bayside Solutions Bear Cognition BlueAlly Services Broadridge Burtch Works CBTS CVS / Aetna CareHarmony Caterpillar CircleUp Cisco Coit Group Collabera, Inc. Common App CompuGain CoreSite Cornerstone Staffing Solutions, Inc. Coursera Crawford Thomas Recruiting Curate Partners CybeCys, Inc. CyberCoders DMI DataLab USA Delphi-US, LLC Dick's Sporting Goods Diversant, LLC Dstillery Edison Eliassen Group Enhance IT Entelligence EpicTec Expedia Fandango FedEx Fladger Associates FleetCor Technologies, Inc. Flexton Flywheel Digital ForgeRock Forrest Solutions Further Enterprise Solutions Gap Inc. GitHub Good Apple Google Greater New York Insurance Companies Greenphire Gsquared Group HIRECLOUT HP Harnham Havas Media Group Hays Hired by Matrix, Inc Hirewell Homesnap Horizontal Talent Huxley IBM IDR IQVIA ISO Ibotta Idexcel Innovative Systems Group Intelliswift International Consulting Associates, Inc. JM Eagle JPI Jefferson Frank Jobot Jobspring Partners KGS Technology Group, Inc Kenshoo Komodo Health LexisNexis LinkedIn LivePerson LockerDome M Science MITRE MaxisIT, Inc. McKinley Marketing Partners Media Assembly Mesh Recruiting, LLC Microsoft MindPool, Inc. Modis Moodys Northwest Consulting MotiveMetrics Mount Indie Next Insurance Ntelicor Nvidia OkCupid Olive Onebridge OpenArc, LLC. Optello Parker and Lynch Patel Consulatants Pathrise PayPal Pilot Flying J Planet Pharma Prime Team Partners Proclinical Ltd. Prodigy Education Puls Quadrant Resource Radiansys, Inc. Real Rent-A-Center Reply Retail Solutions Inc. SBS Creatix, LLC Sand Cherry Associates Sanjay Bharti, MD PLLC Scale Media Scion Staffing Selling Simplified Servpro Industries, LLC ShootProof Sonder Inc. Susquehanna International Group, LLP Synectics Inc. Synergis Systecon North America TRC Staffing Services, Inc. Tech Observer TechWorkers Technology Ventures Tencent The AI Institute The Equus Group The Home Depot The Judge Group The Lab Consulting Topco Associates LLC Toyoda Gosei Americas Ursus, Inc. Valassis Via Visible Walgreens Wind River Wish Wonderlic WorldLink US Yoh, A Day & Zimmermann Company, LLC zyBooks
2020-08-11 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2020-08-12 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2020-08-13 0 0 0 0 0 0 0 0 0 0 13 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
2020-08-14 0 0 0 0 0 0 0 0 0 0 13 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
2020-08-15 0 0 0 0 0 0 0 0 0 0 13 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
2020-08-16 0 0 0 0 0 0 0 0 0 0 13 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
2020-08-17 0 0 0 0 0 0 0 0 0 0 13 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
2020-08-18 0 0 0 0 0 0 0 0 0 0 13 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
2020-08-19 0 0 0 0 0 0 0 0 0 0 23 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
2020-08-20 0 0 0 0 0 0 0 0 0 0 23 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 9 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0
2020-08-21 0 0 0 0 0 0 0 0 0 0 25 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 12 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0
2020-08-22 0 0 0 0 0 0 0 0 0 0 26 0 0 1 0 0 0 0 0 0 0 0 0 0 13 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 0 0 0 0 0 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 13 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0
2020-08-23 0 0 0 0 0 0 0 0 0 0 26 0 0 1 0 0 0 0 0 0 0 0 0 0 13 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 0 0 0 0 0 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 13 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 3 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0
2020-08-24 0 0 0 0 0 0 0 0 0 0 26 0 0 1 0 0 0 0 0 0 0 0 0 0 13 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 0 0 0 0 0 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 13 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 3 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0
2020-08-25 0 0 0 0 0 0 0 0 0 0 26 0 0 1 0 0 0 0 0 0 0 0 0 0 13 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 0 0 0 0 0 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 13 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 3 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0
2020-08-26 0 0 0 0 0 0 0 0 0 0 26 0 0 1 0 0 0 0 0 0 0 0 0 0 13 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 0 0 0 0 0 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 13 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 3 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0
2020-08-27 0 0 0 0 0 0 0 0 0 0 26 0 0 1 0 0 0 0 0 0 0 0 0 0 13 0 0 0 3 0 0 1 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 4 0 0 0 0 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 14 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 3 0 0 0 0 0 1 0 0 1 1 2 0 0 0 0
2020-08-28 0 0 0 0 0 0 0 0 0 0 26 0 0 1 0 0 1 0 0 0 0 0 0 0 13 0 0 0 4 0 0 1 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 4 0 0 0 0 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 14 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 5 0 0 0 0 0 1 0 0 1 1 2 0 0 0 0
2020-08-29 0 0 0 0 0 0 0 0 0 0 27 0 0 1 0 0 1 0 0 0 0 0 0 0 13 0 0 0 4 0 0 1 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 9 0 10 0 0 0 0 4 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 4 0 0 0 0 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 14 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 5 0 0 0 0 0 1 0 0 1 1 2 0 0 0 0
2020-08-30 0 0 1 0 0 0 0 0 0 0 28 0 0 1 0 0 1 1 0 0 0 0 1 0 13 1 0 0 4 0 0 1 0 1 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 4 9 0 10 1 0 0 0 4 0 0 0 0 0 0 0 1 2 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 0 7 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 5 0 0 0 0 0 1 0 0 1 1 4 0 0 3 0
2020-08-31 0 0 1 0 0 0 0 0 0 0 28 0 0 1 0 0 1 1 0 0 0 0 1 0 13 1 0 0 4 0 0 1 0 1 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 4 9 0 10 1 0 0 0 4 0 0 0 0 0 0 0 1 2 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 0 7 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 5 0 0 0 0 0 1 0 0 1 1 4 0 0 3 0
2020-09-01 0 0 1 0 0 0 0 0 0 0 28 0 0 1 0 0 1 1 0 0 0 0 1 0 13 1 0 0 4 0 0 1 0 1 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 4 9 0 10 1 0 0 0 4 0 0 0 0 0 0 0 1 2 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 0 7 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 14 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 5 0 0 0 0 0 1 0 0 1 1 4 0 0 3 0
2020-09-02 0 0 1 0 0 0 0 0 0 0 28 0 0 2 0 0 1 1 0 1 0 0 1 0 13 1 0 0 4 0 1 1 0 1 0 1 0 2 0 0 0 0 0 4 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 1 0 4 9 0 10 1 0 0 0 4 0 0 0 0 0 0 0 1 2 1 1 1 2 0 0 0 1 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 0 7 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 14 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 2 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 5 0 0 0 0 0 1 1 0 1 1 4 1 0 3 1
2020-09-03 0 0 1 0 0 1 0 0 0 0 28 0 0 2 0 0 1 1 0 1 0 1 1 0 13 1 0 0 4 0 1 1 0 1 0 1 0 2 0 0 0 0 0 4 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 1 0 4 9 0 10 1 0 0 0 4 0 0 0 0 0 0 0 1 2 1 1 1 2 0 0 0 1 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 0 7 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 14 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 2 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 5 0 0 0 0 0 1 1 0 1 1 4 1 0 3 1
2020-09-04 0 0 1 0 0 1 0 0 1 0 28 0 0 3 0 0 1 1 0 1 0 1 1 0 13 1 0 0 4 0 1 1 0 1 0 1 0 2 0 0 0 0 0 4 1 0 1 0 0 0 0 3 1 0 0 0 0 0 0 1 0 4 10 0 10 1 0 0 0 4 0 0 0 0 0 0 0 1 2 1 1 1 2 0 0 0 1 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 0 7 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 14 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 2 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 5 0 0 0 0 0 1 1 0 1 1 5 1 0 3 1
2020-09-05 0 0 1 0 0 1 0 0 1 0 28 0 0 3 0 0 1 1 0 1 0 1 1 0 13 1 0 0 4 0 1 1 0 1 0 1 0 2 0 0 0 0 0 4 1 0 1 0 0 0 0 3 1 0 0 0 0 0 0 1 0 4 10 0 10 1 0 0 0 4 0 0 0 0 0 0 0 1 2 1 1 1 2 0 0 0 1 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 0 7 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 14 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 2 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 5 0 0 0 0 0 1 1 0 1 1 5 1 0 3 1
2020-09-06 0 0 1 1 0 1 0 0 1 0 28 0 0 3 0 1 1 1 0 1 1 1 1 1 13 1 0 0 4 0 1 1 0 1 0 1 0 2 0 0 0 0 0 4 1 0 1 0 0 0 0 3 1 0 0 1 0 0 0 1 0 4 10 0 10 1 0 0 0 4 0 0 0 0 0 0 0 1 2 1 1 1 2 1 1 0 1 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 0 7 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 14 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0 2 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 5 0 0 0 1 0 1 1 0 1 1 5 1 0 3 1
2020-09-07 0 0 1 1 0 1 0 0 1 0 28 0 0 3 0 1 1 1 0 1 1 1 1 1 13 1 0 0 4 0 1 1 0 1 1 1 0 2 0 1 0 0 0 4 1 0 1 0 0 0 0 3 1 0 0 1 0 0 0 1 0 4 10 0 10 1 0 0 0 4 0 0 1 0 0 0 0 1 2 1 1 1 2 1 1 0 1 0 0 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 1 7 1 0 1 0 0 1 0 1 0 1 0 0 13 1 0 1 14 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0 2 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 5 0 0 0 1 0 1 1 0 1 1 5 1 0 3 1
2020-09-08 0 0 1 1 0 1 1 0 1 0 28 1 0 3 0 1 1 1 0 1 1 1 1 1 13 1 0 0 4 0 1 1 0 1 1 1 0 2 0 1 0 0 0 4 1 0 1 0 0 0 0 3 1 0 0 1 0 0 0 1 0 4 10 0 10 1 0 0 0 4 0 0 1 0 0 0 0 1 2 1 1 1 2 1 1 0 1 0 1 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 1 7 1 0 1 0 1 1 0 1 0 1 1 0 13 1 0 1 14 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 2 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 5 0 0 0 1 0 1 1 0 1 1 5 1 0 3 1
2020-09-09 0 0 1 1 0 1 1 0 1 0 28 1 0 3 0 1 1 1 0 1 1 1 1 1 13 1 0 0 4 0 1 1 0 1 1 1 0 2 0 1 0 0 0 4 1 0 1 0 0 0 0 3 1 0 0 1 0 0 0 1 0 4 10 0 10 1 0 0 0 4 0 0 1 0 0 0 0 1 2 1 1 1 2 1 1 0 1 0 1 0 1 0 0 0 0 0 1 3 1 0 5 0 0 0 1 7 1 0 1 0 1 1 0 1 0 1 1 0 13 1 0 1 14 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 2 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 5 0 0 0 1 0 1 1 0 1 1 5 1 0 3 1
2020-09-10 0 0 1 1 1 1 1 0 1 0 28 1 0 8 0 1 1 2 0 1 1 1 1 1 13 1 0 0 4 0 1 1 0 1 1 1 0 2 0 1 0 0 0 4 1 1 1 0 0 0 0 3 1 0 0 1 0 1 1 1 0 4 10 1 10 1 0 0 0 4 0 0 1 0 0 0 0 1 2 1 1 1 2 1 1 0 1 0 1 1 1 0 0 0 0 0 1 3 1 0 7 0 0 0 1 7 1 0 1 0 1 1 0 1 0 1 1 0 14 1 0 1 14 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 3 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 5 0 0 0 1 0 1 1 0 1 1 5 1 0 3 1
2020-09-11 0 0 1 1 4 1 1 1 1 0 28 1 0 9 0 1 1 2 0 1 1 1 3 1 13 1 0 1 4 0 1 1 1 1 1 1 0 2 1 2 2 0 1 4 1 1 1 0 0 0 1 3 1 1 0 1 0 1 1 1 0 4 10 1 10 1 0 0 0 4 0 1 1 0 0 0 1 1 2 2 1 1 2 1 1 1 1 0 1 1 1 0 0 0 0 1 1 3 1 1 8 0 0 0 1 7 1 1 1 0 1 2 1 1 0 1 1 0 16 2 0 1 14 1 1 0 0 1 1 1 0 0 1 1 0 1 0 1 0 4 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 5 0 0 0 1 0 1 1 0 1 1 5 1 1 3 1
2020-09-12 0 0 1 1 4 1 1 1 1 0 28 1 0 9 0 1 1 2 0 1 1 1 3 1 13 1 0 1 4 0 1 1 1 1 1 1 0 2 1 2 2 0 1 4 1 1 1 0 0 0 1 3 1 1 0 1 0 1 1 1 0 4 10 1 10 1 1 0 0 4 0 1 1 0 0 0 1 1 2 2 1 1 2 1 1 1 1 0 1 1 1 0 0 0 0 1 1 3 1 1 8 0 0 0 1 7 1 1 1 0 1 2 1 1 0 1 1 0 16 2 0 1 14 1 1 0 0 1 1 1 0 0 1 1 0 1 0 1 0 4 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 5 0 0 0 1 0 1 1 0 1 1 5 1 1 3 1
2020-09-13 0 0 1 1 4 1 1 1 1 0 28 1 0 9 0 1 1 2 0 1 1 1 3 1 13 1 0 1 4 0 1 1 1 1 1 1 0 2 1 3 2 0 1 4 1 1 1 0 0 0 1 3 1 1 0 1 0 1 1 1 0 4 10 1 10 1 1 0 0 4 0 1 1 0 0 0 1 1 2 2 1 1 2 1 1 1 1 0 1 1 1 0 0 0 0 1 1 3 1 1 8 0 0 0 1 7 1 1 1 0 1 2 1 1 0 1 1 0 16 2 0 1 14 1 1 0 0 1 1 1 0 0 1 1 0 1 0 1 0 4 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 5 0 0 0 1 0 1 1 0 1 1 5 1 1 3 1
2020-09-14 0 0 1 1 4 1 1 1 1 0 28 1 0 9 0 1 1 2 0 1 1 1 3 1 13 1 0 1 4 0 1 1 1 1 1 1 0 2 1 3 2 0 1 4 1 1 1 1 0 0 1 3 1 1 0 1 0 1 1 1 0 4 10 1 10 1 1 0 0 4 0 1 1 0 0 0 1 1 2 2 1 1 2 1 1 1 1 0 1 1 1 1 0 0 0 1 1 3 1 1 8 0 0 0 1 7 1 1 1 0 1 2 1 1 0 1 1 1 18 2 0 1 21 1 1 0 0 1 1 1 0 0 1 1 0 1 0 1 0 5 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 5 0 0 0 1 0 1 1 0 1 1 5 1 1 3 1
2020-09-15 0 0 1 1 4 1 1 1 1 1 28 1 0 9 0 1 1 2 0 1 1 1 3 1 13 1 0 1 4 0 1 1 1 1 1 1 0 2 1 3 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 0 4 10 1 10 1 1 0 0 4 0 1 1 0 1 0 1 1 2 3 1 1 2 1 1 1 1 0 1 1 1 2 0 1 0 1 1 3 1 2 8 1 0 0 1 7 1 1 1 1 1 2 1 1 0 1 1 1 23 2 1 6 21 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 5 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 5 0 0 0 1 0 1 1 0 1 1 5 1 1 3 1
2020-09-16 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 0 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 0 4 10 1 10 1 1 0 0 4 1 1 1 0 1 0 1 1 2 3 1 1 2 1 1 1 1 0 2 1 1 2 0 1 0 1 1 3 1 2 8 1 0 1 1 7 1 1 1 1 1 2 1 1 0 1 1 1 27 2 1 6 21 1 1 1 1 1 1 1 0 1 1 1 1 1 2 1 1 5 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 5 0 0 0 1 0 1 1 0 1 1 5 1 1 3 1
2020-09-17 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 0 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 4 10 1 10 1 1 1 0 4 1 1 1 0 1 0 1 1 2 3 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 1 2 17 1 0 2 1 7 1 1 1 1 1 2 1 1 0 1 1 1 27 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 0 1 1 0 1 1 5 1 1 3 1
2020-09-18 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 10 1 1 1 1 4 1 1 1 0 1 0 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 1 2 17 1 0 2 1 7 1 1 1 1 1 2 1 1 1 1 1 1 28 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 0 1 1 1 1 1 5 1 1 3 1
2020-09-19 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 10 1 1 1 1 4 1 1 1 0 1 0 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 1 2 17 1 0 2 1 7 1 1 1 1 1 2 1 1 1 1 1 1 29 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 0 1 1 1 1 1 5 1 1 3 1
2020-09-20 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 10 1 1 1 1 4 1 1 1 0 1 0 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 1 2 17 1 0 2 1 7 1 1 1 1 1 2 1 1 1 1 1 1 29 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 0 1 1 1 1 1 5 1 1 3 1
2020-09-21 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 10 1 1 1 1 4 1 1 1 0 1 0 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 1 2 17 1 0 2 1 7 1 1 1 1 1 2 1 1 1 1 1 1 29 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 0 1 1 1 1 1 5 1 1 3 1
2020-09-22 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 10 1 1 1 1 4 1 1 1 0 1 0 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 1 2 17 1 0 2 1 7 1 1 1 1 1 2 1 1 1 1 1 1 29 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 0 1 1 1 1 1 5 1 1 3 1
2020-09-23 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 10 1 1 1 1 4 1 1 1 0 1 0 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 1 2 17 1 0 2 1 7 1 1 1 1 1 2 1 1 1 1 1 1 29 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 0 1 1 1 1 1 5 1 1 3 1
2020-09-24 0 1 1 1 4 1 1 1 1 1 28 1 1 9 1 1 2 2 0 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 0 2 1 6 2 0 2 4 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 10 1 1 1 1 4 1 1 1 0 1 0 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 1 2 17 1 0 2 1 7 1 1 1 1 1 2 1 1 1 1 1 1 29 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 0 1 1 1 1 1 5 1 1 3 1
2020-09-25 1 1 1 1 4 1 1 1 1 1 29 1 1 10 1 1 2 2 1 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 1 2 1 6 2 0 2 5 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 11 1 1 1 1 4 2 1 1 0 1 1 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 2 1 1 1 1 3 1 2 17 1 1 2 1 7 1 1 1 1 1 2 1 1 1 1 1 2 32 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 1 1 1 1 1 1 1 1 1 1 6 1 1 3 1
2020-09-26 1 1 1 1 4 1 1 1 1 1 29 1 1 10 1 1 2 2 1 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 1 2 1 6 2 0 2 5 1 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 11 1 1 1 1 4 2 1 1 0 1 1 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 2 1 1 1 1 3 1 2 17 1 1 2 1 7 1 1 1 1 1 2 1 1 1 1 1 2 32 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 1 1 1 1 1 1 1 1 1 1 6 1 1 3 1
2020-09-27 1 1 1 1 4 1 1 1 1 1 29 1 1 10 1 1 2 2 1 1 1 1 3 1 13 1 6 1 4 0 1 1 1 1 1 1 1 2 1 6 2 0 2 5 6 1 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 4 10 1 11 1 1 1 1 4 2 1 1 0 1 1 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 2 1 1 1 1 3 1 2 17 1 1 2 1 7 1 1 1 1 1 2 1 1 1 1 1 2 33 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 6 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 6 1 1 3 1
2020-09-28 1 1 1 1 4 1 1 1 1 1 29 1 1 10 1 1 2 2 1 1 1 1 3 1 13 1 6 1 4 1 1 1 1 1 1 1 1 2 1 6 2 1 2 5 6 1 1 12 1 1 1 3 1 1 1 2 1 1 1 1 1 5 10 1 11 1 1 1 1 4 2 1 1 1 1 1 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 3 2 1 1 1 1 3 1 2 17 1 1 2 1 7 1 1 1 1 1 2 1 1 1 1 1 2 33 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 6 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 6 1 1 3 1
2020-09-29 1 1 1 1 4 1 1 1 1 1 29 1 1 10 1 1 2 2 1 1 1 1 3 1 13 1 6 1 4 1 1 1 1 1 1 1 1 2 1 6 2 1 2 5 6 1 1 12 1 1 1 3 1 1 1 2 1 1 1 1 1 5 10 1 11 1 1 1 1 4 2 1 1 1 1 1 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 3 2 1 1 1 1 3 1 2 17 1 1 2 1 7 1 1 1 1 1 2 1 1 1 1 1 2 33 2 1 6 21 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 6 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 6 1 1 3 1
In [5]:
#Total number of applications to each company.
cumulative_app_count = application_df.iloc[[-1]]
major_companies = cumulative_app_count.columns[(cumulative_app_count >= 5).iloc[0]]
minor_companies = cumulative_app_count.columns[(cumulative_app_count < 5).iloc[0]].tolist()

#Create a dummy company called 'Other', containing all companies with less than 4 applications.
major_df = pd.DataFrame.copy(application_df)
major_df['Other'] = major_df[minor_companies].sum(axis = 1)
major_df.drop(minor_companies, axis = 1, inplace = True)

Bar Chart Race

Below is an animation of the above data. Bar chart races run more smoothly with larger numbers, like population, or monetary amounts, over longer periods of time. But I am happy the way this turned out.

In [6]:
bold_colors = ['#f0f0f0', '#3cb44b', '#fabebe', '#4363d8', '#f58231', '#911eb4', '#fffac8', '#000075',
               '#ffe119', '#008080', '#ffffff', '#e6194b', '#bcf60c', '#9a6324', '#e6beff',
               '#800000', '#aaffc3', '#808000', '#ffd8b1', '#46f0f0', '#f032e6', '#000000']

apps = bcr.bar_chart_race(df = major_df,
                          filename = 'applications.mp4',
                          orientation = 'h',
                          sort = 'desc',
                          n_bars = 15,
                          cmap = bold_colors[2:22],
                          filter_column_colors = False,
                          period_fmt = '%B %d, %Y',
                          period_label = {'x': 0.99,
                                          'y': 0.15,
                                          'ha': 'right',
                                          'size': 14},
                          period_summary_func = lambda v, r: {'x': 0.99,
                                                              'y': 0.05,
                                                              's': f"{v.sum():,.0f} applications completed.\nCompanies with less than 4 applications are grouped in 'Other'.",
                                                              'ha': 'right',
                                                              'size': 8,
                                                              'weight': 'normal'},
                          title = 'Total Number of Jobs Applied to by Company and Date',
                          steps_per_period = 10)

Video("applications.mp4")
Out[6]:

Job Location

Some slight modifications were made from LinkedIn data during the application process:

  1. For Curate Partners, a job location was changed from Raleigh-Durham-Chapel Hill Area to Raleigh.
  2. For Parker & Lynch, a job location was changed from Orange County to Los Angeles.
  3. For Pilot Flying J, the job location was changed from Remote to Knoxville.
  4. For Synectics, a job location was changed from Greater Chicago to Chicago.
  5. For several companies, job locations were changed from Greater San Francisco to San Francisco.

In addition, for Common App, the job location was changed from none specified to Arlington. I did not learn about their opening from LinkedIn.

By City

Missing Cities

Several jobs I applied to were in cities not in the spreadsheet I downloaded.

In [7]:
#Select relevant columns.
df_loc = df[['City', 'State_abbv', 'State', 'Date_Applied']]

#Select only city, state, and location columns.
lat_lons = lat_lons[['city', 'state_id', 'lat', 'lng']]

#Count the number of applications.
city_tally = df_loc.groupby(['City', 'State_abbv', 'State']).count().reset_index()
#Merge to get latitude, longitude for each city.
merged = pd.merge(city_tally,
                  lat_lons,
                  how = 'left',
                  left_on = ['City', 'State_abbv'],
                  right_on = ['city', 'state_id'])

#Several cities are not in the list.
merged[merged['city'].isna()]
Out[7]:
City State_abbv State Date_Applied city state_id lat lng
0 Andover CA California 1 NaN NaN NaN NaN
8 Bedford MA Massachusetts 3 NaN NaN NaN NaN
22 Center Valley PA Pennsylvania 1 NaN NaN NaN NaN
34 Dallas - Ft. Worth TX Texas 4 NaN NaN NaN NaN
72 Patuxent River MD Maryland 1 NaN NaN NaN NaN
101 Sydney AU Australia 1 NaN NaN NaN NaN
104 Toronto CN Canada 1 NaN NaN NaN NaN
112 Weston MA Massachusetts 1 NaN NaN NaN NaN

Manual Removal and Entry

Two were from Australia and Canada. For the others, I retrieved values from Google. An approximate average value was chosen for Dallas-Ft. Worth.

In [8]:
#Huxley job from Sydney, Australia was removed.
merged = merged[merged.State_abbv != 'AU']
#Prodigy Academy job from Toronto, Canada was removed.
merged = merged[merged.State_abbv != 'CN']

#Manual latitude and longitude entry. 
dict_loc = {0: (42.6583, -71.1368),
            8: (42.4906, -71.2760),
            22: (40.5294, -75.3937),
            34: (32.7598, -97.0646),
            72: (38.2773, -76.4229),
            112: (42.3668, -71.3031)}

#Loop to manually enter missing latitude and longitudes.
for idx in dict_loc :
    lat = dict_loc[idx][0]
    lon = dict_loc[idx][1]
    merged.at[idx, 'lat'] = lat
    merged.at[idx, 'lng'] = lon

#Rename columns and drop redundant columns    
merged = merged.rename(columns = {'Date_Applied' : 'Count',
                                  'lat': 'Latitude',
                                  'lng': 'Longitude'}).drop(['city', 'state_id'], axis = 1)

Mountain View

My left join was 11 off. I soon determined that two cities in California are named Mountain View, my left join was not accurate.

In [9]:
merged[merged.City == 'Mountain View']
Out[9]:
City State_abbv State Count Latitude Longitude
64 Mountain View CA California 11 37.4000 -122.0796
65 Mountain View CA California 11 38.0093 -122.1169

I removed the one not in the Bay Area.

In [10]:
merged = merged[(merged['Latitude'] != 38.0093) | (merged['Longitude'] != -122.1169)]

By State

Below is the number of job applications by state.

In [11]:
#Group job applications by State, count them, reset the index, drop the date, and rename City to Count.
state_tally = merged[['Count', 'State_abbv', 'State']].groupby(['State_abbv', 'State']).sum().sort_values(by = 'Count', ascending = False, axis = 0).reset_index()
state_tally
Out[11]:
State_abbv State Count
0 CA California 97
1 WA Washington 43
2 TX Texas 30
3 NY New York 30
4 PA Pennsylvania 25
5 VA Virginia 24
6 IL Illinois 21
7 MA Massachusetts 18
8 NC North Carolina 16
9 GA Georgia 14
10 MD Maryland 14
11 DC District Of Columbia 11
12 CO Colorado 9
13 AZ Arizona 8
14 OH Ohio 6
15 CT Connecticut 6
16 MI Michigan 6
17 NJ New Jersey 4
18 TN Tennessee 3
19 KY Kentucky 3
20 IN Indiana 3
21 MO Missouri 2
22 OR Oregon 2
23 RI Rhode Island 2
24 SC South Carolina 2
25 UT Utah 1
26 AR Arkansas 1
27 MN Minnesota 1
28 KS Kansas 1
29 ID Idaho 1
30 DE Delaware 1
31 WV West Virginia 1

US Map

Below is an interactive map of the US. Applications are sorted by city and state.

In [12]:
#Singular or Plural.
def f(row) :
    if row['Count'] == 1 :
        string_val = ' application in '
    else :
        string_val = ' applications in '

    return string_val

#Number of applications per city as text.
merged['Text'] = merged['Count'].astype(str) + merged.apply(f, axis = 1) + merged['City'] + ', ' + merged['State_abbv'] + '.'

#Number of applications per state as text.
state_tally['Text'] = state_tally['Count'].astype(str) + state_tally.apply(f, axis = 1) + state_tally['State'] + '.'

#Color in states by number of applications.
state_map_data = go.Choropleth(locations = state_tally['State_abbv'],
                               z = state_tally['Count'],
                               text = state_tally['Text'],
                               hoverinfo = 'text',
                               locationmode = 'USA-states',
                               colorbar = {'title': "<b>Applications</b>",
                                           'thicknessmode': "pixels",
                                           'thickness': 70,
                                           'lenmode': "pixels",
                                           'len': 400,
                                           'titlefont': {'size': 16},
                                           'tickfont': {'size': 12},
                                           'tickvals': [0, 20, 40, 60, 80, 100]},
                               colorscale = 'Blues')

#Plot cities, size corresponds to number of applications.
city_map_data = go.Scattergeo(lon = merged['Longitude'],
                              lat = merged['Latitude'],
                              text = merged['Text'],
                              hoverinfo = 'text',
                              locationmode = 'USA-states',
                              marker = {'size': 10*np.sqrt(merged['Count']),
                                        'color': 'Darkgreen'})

data = [state_map_data, city_map_data]

fig = go.Figure(data = data)
fig.update_layout(title = {'text': 'Where I Applied (Hover for Cities and Count)',
                           'font': {'size': 30}},
                  geo_scope = 'usa',
                  width = 950,
                  height = 550)

Waffle Plot

Below is distribution of applications by state.

In [13]:
#Sort by number of applications for each state.
waffle_data = state_tally[['State', 'Count']]

#Add a row for states with less than 3 applications.  'Other' also includes Australia and Japan.
waffle_data = waffle_data.append(pd.DataFrame({'State': ['Other'], 'Count': [2]})).reset_index(drop = True)

to_drop = []
#Add applications from states with less than 3 to 'Other'.
for i in waffle_data.index :
    if waffle_data.iloc[i]['Count'] < 3 :
        temp = waffle_data.iloc[i]['Count']
        waffle_data.at[32, 'Count'] += temp
        to_drop.append(i)

#Remove states with less than 3.  Change orientation of data.  
waffle_data = waffle_data.drop(labels = to_drop, axis = 0).reset_index(drop = True).set_index('State').transpose()
In [14]:
fig = plt.figure(FigureClass = Waffle,
                 rows = 12,
                 values = waffle_data.values.tolist()[0],
                 labels = waffle_data.columns.tolist(),
                 figsize = (15, 6),
                 colors = bold_colors,
                 legend = {'loc': 'upper left',
                           'ncol': 2,
                           'fontsize': 13})